from datetime import datetime

from tornado import web, ioloop

class indexHandler(web.RequestHandler):
    # 通过 set_default_headers 函数，可以规定当前view的响应头
    # 修改单个响应头设置
    def set_default_headers(self):
        self.set_header('nowtime', datetime.now()) # 通常用于修改响应头中 本身已有的信息，比如 content-type
        self.add_header('myname','xuehongbiao') # 通常用于加入自定义的响应头信息
        self.set_cookie('messageeee','onmygod') # 为客户端设置cookie
        self.clear_header('nowtime') # 清楚 响应头中的内容。 常用于 移除 公共响应头里的内容
        self.clear_cookie('message') # 服务端 清除客户端上的cookie
        self.clear_all_cookies() # 清除所有的cookie
    def get(self):
        self.redirect('http://www.baidu.com') # 重定向 浏览器访问的资源
        # self.set_status(404,'notfound---') # 设置响应状态码，这种方式修改状态码，不会影响 响应的正确返回
        # self.send_error(404,msg='服务器没了') # 响应一个错误页面给浏览器
        # self.write('aaa')
    # 当触发 send_error 函数的时候，会自动触发这个函数
    def write_error(self,status_code,**kargs):
        print('status-code',status_code)
        print('msg--',kargs['msg'])
        self.write('<h1>404， --什么都没有</h1>')

# 通过base类的继承，让视图具有公共的响应头
class base(web.RequestHandler):
    def set_default_headers(self):
        self.set_header('base_date',int(datetime.now().timestamp()))
class homeHandler(base):
    def get(self):
        self.write('home')
class editHandler(base):
    def get(self):
        self.write('edit')
class webApplication(web.Application):
    def __init__(self, urlPatterns, *args, **kwargs):
        kwargs['handlers'] = urlPatterns
        super().__init__( *args, **kwargs)
#   为tornado服务器的启动 开启debug模式
settings = {
    'debug':True
}
if __name__ == '__main__':
    app = webApplication([(r"/", indexHandler),(r"/home", homeHandler),(r"/edit", editHandler)], **settings)
    app.listen(8999)
    ioloop.IOLoop.current().start()
